[LINUX][ Fix x86/64 entry.S to use paravirtualized sti/cli properly.
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Mon, 14 Aug 2006 14:24:59 +0000 (15:24 +0100)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Mon, 14 Aug 2006 14:24:59 +0000 (15:24 +0100)
This fixes
- one instance of using XEN_BLOCK_EVENTS where XEN_UNBLOCK_EVENTS was
  meant
- four instances of left-over cli-s that should have been replaced
  with XEN_BLOCK_EVENTS
- one instance of slightly wrong placement (without resulting in ill
  behavior, but needlessly making the diff to native more complex)

Signed-off-by: Jan Beulich <jbeulich@novell.com>
linux-2.6-xen-sparse/arch/x86_64/kernel/entry-xen.S

index 05e7ce0b7eae67e9155d0b201fad0e47cf2988d3..7edd8d5cb6b0f816d3769dd1c53149e4eb526773 100644 (file)
@@ -271,7 +271,7 @@ sysret_careful:
        CFI_RESTORE_STATE
        bt $TIF_NEED_RESCHED,%edx
        jnc sysret_signal
-        XEN_BLOCK_EVENTS(%rsi)        
+       XEN_UNBLOCK_EVENTS(%rsi)
        pushq %rdi
        CFI_ADJUST_CFA_OFFSET 8
        call schedule
@@ -295,7 +295,7 @@ sysret_signal:
 1:     movl $_TIF_NEED_RESCHED,%edi
        /* Use IRET because user could have changed frame. This
           works because ptregscall_common has called FIXUP_TOP_OF_STACK. */
-       cli
+       XEN_BLOCK_EVENTS(%rsi)
        jmp int_with_check
        
 badsys:
@@ -377,7 +377,7 @@ int_careful:
        call schedule
        popq %rdi
        CFI_ADJUST_CFA_OFFSET -8
-       cli
+       XEN_BLOCK_EVENTS(%rsi)
        jmp int_with_check
 
        /* handle signals and tracing -- both require a full stack frame */
@@ -395,7 +395,7 @@ int_very_careful:
        popq %rdi
        CFI_ADJUST_CFA_OFFSET -8
        andl $~(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT|_TIF_SINGLESTEP),%edi
-       cli
+       XEN_BLOCK_EVENTS(%rsi)
        jmp int_restore_rest
        
 int_signal:
@@ -407,7 +407,7 @@ int_signal:
 1:     movl $_TIF_NEED_RESCHED,%edi    
 int_restore_rest:
        RESTORE_REST
-       cli
+       XEN_BLOCK_EVENTS(%rsi)
        jmp int_with_check
        CFI_ENDPROC
                
@@ -535,8 +535,8 @@ retint_careful:
        call  schedule
        popq %rdi               
        CFI_ADJUST_CFA_OFFSET   -8
-       XEN_BLOCK_EVENTS(%rsi)          
        GET_THREAD_INFO(%rcx)
+       XEN_BLOCK_EVENTS(%rsi)          
 /*     cli */
        jmp retint_check